clearerr関数は、ファイルポインタで示されるストリームのEOF(end of file)とエラーの状態をクリアします。
#include <stdio.h>
void clearerr(FILE *stream);
*streamはfopen関数で取得した、ファイルポインタを指定します。
次の例題プログラムはファイルの最後(EOF)まで入力した後、再度、ファイルの先頭から入力しています。ここでは、エラー状態をクリアする目的でclearerr関数を使っています。
プログラム 例
#include <stdio.h>
int main(void)
{
FILE *fp;
int in_data;
if ((fp = fopen('temp.txt', 'r')) != NULL) {
printf('1回目の表示\n');
while((in_data = fgetc(fp)) != EOF) {
putchar(in_data);
}
clearerr(fp);
/* ファイル位置表示子をファイルの先頭に戻す */
rewind(fp);
printf('\n2回目の表示\n');
while((in_data = fgetc(fp)) != EOF) {
putchar(in_data);
}
fclose(fp);
}
else {
printf('ファイルのオープンに失敗しました\n');
}
return 0;
}
例の実行結果
$ cat temp.txt Hello World!!. $ $ ./clearerr.exe 1回目の表示 Hello World!!. 2回目の表示 Hello World!!. $